Many types of computer system use virtual memory. The use of virtual memory allows a computer to reference data stored in auxiliary storage as though it were resident in main memory. Another benefit of using virtual memory is the ability to reference contiguous virtual memory addresses which correlate to non-contiguous physical memory addresses. In order to correlate the virtual memory addresses to physical memory addresses, a virtual address translation is performed.
The virtual memory address translation is typically performed by referencing a translation table (often referred to as a translation lookaside buffer, or TLB) which caches recently used virtual address translations. If the translation table does not have the requested physical memory address for the virtual memory address, then the translation is fetched from memory (e.g., from a page table stored in main memory). A fetched address translation is then stored in the translation table. The requestor is held off until the requested translation is available in the translation table.
In conventional computer systems, virtual address translation is performed on demand because the non-contiguous use of physical memory accesses is inherently unpredictable. In other words, a conventional design for a memory management unit (MMU) does not attempt to predict virtual address translations because the non-contiguous nature of physical addressing makes it difficult and, hence, very costly to try to predict virtual address translations with any degree of accuracy.